package com.javaee.xiangyang.service;

import com.javaee.xiangyang.common.ServiceResultEnum;
import com.javaee.xiangyang.dto.GoodsDetails;
import com.javaee.xiangyang.entity.Classify;
import com.javaee.xiangyang.entity.Goods;
import java.util.List;

public interface GoodsService {

    /**
     * 管理员新增商品
     */
    ServiceResultEnum addGoods(Goods goods);

    /**
     * 管理员查看所有商品
     */
    List<Goods> findAllGoods();

    /**
     * 管理员根据商品分类查看所有商品
     * 用户根据分类ID获取分类下所有商品(不用封装)
     */
    List<Goods> findAllGoodsByClassifyId(Classify classify);

    /**
     * 根据商品Id查询商品具体信息(包括评论)
     * 需要使用DTO
     */
    GoodsDetails findGoodsDetails(Goods goods);

    /**
     * 根据生成订单最多的商品排序
     */
    List<Goods> findGoodsOrderBy();

    /**
     * 获取所有商品信息(包括评论)
     */
    List<GoodsDetails> findAllGoodsDetails();

    /**
     * 根据查询条件粗略查询商品(包括评论)
     */
    List<GoodsDetails> findGoodsBySomething(String string, Classify classify);

    /**
     * 根据商品库存量查找对应数量剩余的商品
     */
    List<Goods> findGoodsByInventory(Goods goods);

    /**
     * 管理员更改商品库存量
     */
    ServiceResultEnum updateInventoryByGoodsId(Goods goods, boolean type);

    /**
     * 管理员更改商品信息
     */
    ServiceResultEnum updateCommentByCommentId(Goods goods);

    /*=====================================Classify===========================================*/

    /**
     * 管理员新增新的分类
     */
    ServiceResultEnum addClassifyMapper(Classify classify);

    /**
     * 获取所有分类
     */
    List<Classify> findAllClassify();

    /**
     * 获取所有分类和及所有商品
     */
    List<Classify> findAllClassifyAndGoods();

    /**
     * 获取当前分类下所有商品
     */
    Classify findClassifyById(Classify classify);

    /**
     * 管理员修改分类简介
     */
    ServiceResultEnum updateDescribeByClassifyId(Classify classify);

    /**
     * 管理员删除对应分类
     * 暂时不用实现  暑假扩展
     */
    ServiceResultEnum deleteClassifyByClassifyId(Classify classify);

}
